A cloud-computing system may have a serverless infrastructure. More specifically, a serverless infrastructure may be a cloud-computing execution system in which the cloud provider acts as the server, dynamically managing the allocation of machine resources. Pricing is based on the actual amount of resources consumed by a computer software application (application) instead of pre-purchased units of capacity, so that resources are used by a customer on an as-needed basis. Because the resources can be consumed on an as-needed basis, this provides customers with scalable resources, which is very attractive to customers from a cost perspective.
The use of a cloud-computing execution system presents a technical challenge to application development when real-time streaming communications mechanisms are required between Internet of Things (IOT) devices and specific sessions of an application. Most solutions to this technical problem are polling and/or placing a proxy in the middle. Polling relates to the continuous checking of software programs and/or devices by one software program or device to determine the state of other software programs or devices. An example of a state may be whether a software program or device is still connected and wishes to communicate. For example, in order to implement streaming services such as Netflix or Hulu, a set top (e.g. set top box) requests that a unique code be entered by a user. The code is associated with the account and posted to a serverless backend. On the subsequent poll, the update may be found and successfully acknowledged. Subsequent polling happens on an interval and is processor intensive while the polling is executed. The more frequently polling is performed, the more processor power is required. However, if polling is performed less frequently, then it takes longer for the application to recognize a change of state. Accordingly, polling creates a tradeoff between increased cost (for more frequent polling) or reduced application performance (for less frequent polling).
A proxy may be a software design pattern or device, which can interface to another application or device. Placing a proxy in the middle may severely impact application performance or increase costs.
While a serverless environment presents the before-mentioned technical challenges, a traditional server implementation (e.g., dedicated server implementation) poses a different set of challenges. Specifically, a traditional server implementation is expensive in comparison to a serverless environment because the availability of the resources is paid for in a traditional server implementation even when the resources are not being used.
There is a need in the art for a system and method that addresses the shortcomings of the prior art discussed above.